var app = getApp();
//项目URL相同部分，减轻代码量，同时方便项目迁移
//这里因为我是本地调试，所以host不规范，实际上应该是你备案的域名信息
var siteinfo = require("../siteinfo.js"), host = siteinfo.siteroot+'/api/';

/**
 * POST请求，
 * URL：接口
 * postData：参数，json类型
 * doSuccess：成功的回调函数
 * doFail：失败的回调函数
 * showLoading:是否显示加载中 默认显示
 */
function request(url, postData, doSuccess, doFail,showLoading = true) {
  if(showLoading){
    wx.showLoading({
      title: '加载中...',
      mask: true
    })
  }
  wx.request({
    //项目的真正接口，通过字符串拼接方式实现
    url: host + url,
    header: {
      "content-type": "application/x-www-form-urlencoded;charset=UTF-8",
      'Authorization':wx.getStorageSync('authorization')
    },
    data: postData,
    method: 'POST',
    success: function (res) {
      if(res.header['Authorization'] != '' && res.header['Authorization'] != undefined){
        wx.setStorageSync('authorization',res.header['Authorization'])
      }
      if(res.data.code != 0){
        wx.showToast({
          title: res.data.msg,
          icon: 'none',    //如果要纯文本，不要icon，将值设为'none',
          duration: 2000 ,
          success: function () {
            // wx.navigateBack({
            //   delta: 1,//返回上一个页面
            // })
          }  
        })  
        return ;
      }
      //参数值为res.data,直接将返回的数据传入
      doSuccess(res.data);
    },
    fail: function () {
      doFail();
    },
    complete: (res) => {
     if(showLoading){
        if(res.data.code == 0){
          wx.hideLoading({ noConflict:true })
        }else{
          setTimeout(function(){
            wx.hideLoading({ noConflict:true })
          },2000)
        }
     }
    }
  })
}
 
//GET请求，不需传参，直接URL调用，
function getData(url, doSuccess, doFail) {
  wx.showToast({
    title: '加载中...',
    mask: true,
    icon: 'loading'
  })
  wx.request({
    url: host + url,
    header: {
      "content-type": "application/json;charset=UTF-8",
      'Authorization':wx.getStorageSync('authorization')
    },
    method: 'GET',
    success: function (res) {
      if(res.header['Authorization'] != '' && res.header['Authorization'] != undefined){
        wx.setStorageSync('authorization',res.header['Authorization'])
      }
      if(res.data.code != 0){
        wx.showToast({
          title: res.data.msg,
          icon: 'none',    //如果要纯文本，不要icon，将值设为'none',
          duration: 2000 ,
        })  
        return ;
      }
      doSuccess(res.data);
    },
    fail: function () {
      doFail();
    },
    complete: (res) => {
      if(res.data.code == 0){
        wx.hideLoading()
      }else{
        setTimeout(function(){
          wx.hideLoading()
        },2000)
      }
    }
  })
}

/**
 * module.exports用来导出代码
 * js文件中通过var call = require("../util/request.js")  加载
 * 在引入引入文件的时候"  "里面的内容通过../../../这种类型，小程序的编译器会自动提示，因为你可能
 * 项目目录不止一级，不同的js文件对应的工具类的位置不一样
 */
module.exports.request = request;
module.exports.getData = getData;
module.exports.host = host;